package com.alks.function.mapper.finance.salary;

import com.alks.entity.data.entity.PcCostDetail2;
import com.alks.entity.data.entity.PcCostType;
import com.alks.function.data.dto.finance.salary.PcCostDetail2Dto;
import com.alks.function.data.dto.finance.salary.PcCostTypeDto;
import com.alks.function.data.request.finance.salary.PcCostDetail2Request;
import com.alks.function.data.request.finance.salary.PcCostDetail2UpdateRequest;
import com.alks.function.data.request.finance.salary.UpdateRemarkRequest;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

@Mapper
public interface SubsidyDeductionMapper {

    /**
     * 扣款明细查询
     * @param request
     * @return
     */
    List<PcCostDetail2Dto> getPcCostDetail2List(PcCostDetail2Request request);

    /**
     * 扣款数量合计
     * @param request
     * @return
     */
    Double getQtyCount(PcCostDetail2Request request);

    /**
     * 扣款金额合计
     * @param request
     * @return
     */
    Double getAmtCount(PcCostDetail2Request request);

    /**
     * 检核作业-0审核/1取消
     * @param ids
     * @param userName
     * @param now
     * @param flag
     * @param years
     */
    void InspectionWork(List<Integer> ids, String userName, LocalDateTime now, String flag,String years);

    /**
     * 扣款/补贴定义-查询
     * @param flag
     * @param companyId
     * @return
     */
    List<PcCostTypeDto> getPcCostType(Integer flag, String companyId);

    /**
     * 查询编码是否存在
     * @param companyId
     * @param typeNo
     * @return
     */
    String getPcCostTypeNo(String companyId, String typeNo);

    /**
     * 查询类型名称是否存在
     * @param companyId
     * @param typeName
     */
    String getPcCostTypeName(String companyId, String typeName);

    /**
     * 扣款/补贴定义-新增
     * @param pcCostType
     */
    void addPcCostType(PcCostType pcCostType);

    /**
     * 扣款/补贴定义-删除
     * @param typeNo
     * @param companyId
     */
    void delPcCostType(String typeNo, String companyId);

    /**
     * 员工资料列表
     * @return
     */
    List<Map<String,String>> geEmployeeList();

    /**
     * 批量新增扣款明细
     * @param details
     */
    void addPcCostDetail2(List<PcCostDetail2> details);

    /**
     * 根据id删除扣款明细
     * @param id
     */
    void delPcCostDetail2(String id);

    /**
     * 根据id删除扣款明细
     * @param id
     */
    void delPcCostDetail2ToId(List<Integer> id);

    /**
     * 修改结算方式
     * @param list
     * @param accountName
     */
    void updatePcCostDetail2(List<PcCostDetail2UpdateRequest> list, String accountName);

    /**
     * 修改备注信息
     * @param remarkCw
     * @param id
     */
    void updatePcCostDetail2ToRemarkCw(String remarkCw, Integer id);

    /**
     * 修改结算单号
     * @param companyId
     * @param years
     * @param balanceNo
     * @return
     */
    int updatePcCostDetail2ToBalanceNo(String companyId, String years, String balanceNo);

    /**
     * 查询月份补贴扣款明细
     * @param years
     * @param companyId
     */
    List<PcCostDetail2Dto> getPcCostDetail2ListByFinanceYymm(String years, String companyId);

    /**
     * 查询员工补贴扣款
     * @param request
     * @return
     */
    List<PcCostDetail2Dto> getPcCostDetail2ListByWorkerId(@Param("list") List<UpdateRemarkRequest> request);

    /**
     * 根据id查询
     * @param id
     * @return
     */
    PcCostDetail2Dto getPcCostDetail2(String id);
}
